package 面试经典150题.链表;

import common.ListNode;

/**
 * @author tmh
 * @date 2024/5/28 21:08
 * @description
 */
public class T2两数相加 {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        int count = 0;
        ListNode result = new ListNode(0);
        ListNode current = result;
        //如果l1为空 l2为空 count=0 表示链表已经相加完成，同时也进位完成
        while (l1 != null || l2 != null || count != 0) {
            int sum = 0;
            if (l1 != null) {
                sum += l1.val;
                l1 = l1.next;
            }
            if (l2 != null) {
                sum += l2.val;
                l2 = l2.next;
            }
            sum += count;
            //判断count是否需要进位
            count = sum >= 10 ? 1 : 0;
            //如果有进位，就代表sum大于10，那么current.val就存储sum-10之后的数字
            current.next=new ListNode(sum-count*10);
            current=current.next;
        }
        return result.next;
    }
}
